module jinji;

import std.meta,
tame.meta,
dast.util : as, ignore, snakeCase;

public import jinji.link.model,
jinji.post.model,
jinji.tag.model,
jinji.user.model;

private enum isPOD(T) = __traits(isPOD, T);

/// Get all structs with @as or @snakeCase
alias getTables(T...) = Filter!(isPOD, getSymbolsWith!(as, T), getSymbolsWith!(snakeCase, T));

/// All models
alias models = Seq!(
	jinji.link.model,
	jinji.post.model,
	jinji.tag.model,
	jinji.user.model
);

/// All tables
alias tables = getTables!models;

public import jinji.common.manage,
jinji.link.api,
jinji.post.api,
jinji.tag.api,
jinji.user.api,
jinji.link.service,
jinji.post.classify,
jinji.post.cr,
jinji.post.service,
jinji.post.search,
jinji.tag.service,
jinji.user.service,
jinji.server;

alias modules = Seq!(
	jinji.common.manage,
	jinji.link.api,
	jinji.post.api,
	jinji.tag.api,
	jinji.user.api,
	jinji.link.service,
	jinji.post.classify,
	jinji.post.cr,
	jinji.post.search,
	jinji.post.service,
	jinji.tag.service,
	jinji.user.service,
	jinji.server);
